#include<cstdio>//A

template<class T>void read(T &x)
{
	x=0;int f=0;char ch=getchar();
	while(ch<'0'||ch>'9') { f|=(ch=='-'); ch=getchar(); }
	while(ch<='9'&&ch>='0') { x=(x<<1)+(x<<3)+(ch^48); ch=getchar(); }
	x = f ? -x : x;
	return ;
}

int n,k,ans;
char M[10][10];
bool li[10];

void init()//initialize
{
	ans=0;
	for(int i=1;i<10;++i)
		li[i]=false;
	return ;
}

void DFS(int x,int z)
{
	if(z==k)
	{
		ans++;
		return ;
	}
	if(x>n)
		return ;
	for(int i=1;i<=n;++i)
	{
		if(M[x][i]=='#'&&li[i]==false)
		{
			li[i]=true;
			DFS(x+1,z+1);
			li[i]=false;
		}
	}
	DFS(x+1,z);
	return ;
}

int main()
{
	while(true)
	{
		init();
		scanf("%d%d\n",&n,&k);
		if(n==-1)break;
		for(int i=1;i<=n;++i)
		{
			for(int j=1;j<=n;++j)
			{
				scanf("%c",&M[i][j]);
			}
			scanf("\n");
		}
		DFS(1,0);
		printf("%d\n",ans);
	}
	return 0;
}
